package com.asambleacristiana.repository.dao;

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import com.asambleacristiana.repository.dao.impl.CuentaDAOImpl;
import com.asambleacristiana.repository.dao.impl.MovimientoDAOImpl;
import com.asambleacristiana.repository.dao.impl.TipoOperacionDAOImpl;
import com.asambleacristiana.repository.dao.impl.UsuarioDAOImpl;
import com.asambleacristiana.repository.dao.impl.ZonaDAOImpl;

public class DAOFactoryJPA {

	private static DAOFactoryJPA instance;
	private EntityManagerFactory entityManagerFactory;

	public static synchronized DAOFactoryJPA getInstance() {
		if (instance == null) {
			instance = new DAOFactoryJPA();
		}
		return instance;
	}

	private DAOFactoryJPA() {
		entityManagerFactory = Persistence.createEntityManagerFactory("mysql");
	}

	public ZonaDAOImpl getZonaDAO() {
		return new ZonaDAOImpl(entityManagerFactory);
	}

	public CuentaDAOImpl getCuentaDAO() {
		return new CuentaDAOImpl(entityManagerFactory);
	}

	public UsuarioDAOImpl getUsuarioDAO() {
		return new UsuarioDAOImpl(entityManagerFactory);
	}

	public TipoOperacionDAOImpl getTipoOperacionDAO() {
		return new TipoOperacionDAOImpl(entityManagerFactory);
	}

	public MovimientoDAOImpl getMovimientoDAO() {
		return new MovimientoDAOImpl(entityManagerFactory);
	}

}
